package com.kevinkk.array;

/**
 * 给定 s 和 t 两个字符串，当它们分别被输入到空白的文本编辑器后，如果两者相等，返回 true 。# 代表退格字符。
 * 注意：如果对空文本输入退格字符，文本继续为空。
 */

public class BackspaceStringCompare {
    class Solution {
        public boolean backspaceCompare(String s, String t) {
            return backspace(s).equals(backspace(t));
        }

        private String backspace(String s){
            char[] c = s.toCharArray();
            int slow = 0;
            // fast 指针只用遍历数据，slow 指针只用指向需要放入的位置
            // 不用担心 fast 和 slow 之间的元素，这些元素已经经过 fast 的检查，都是不符合要求的、不需要处理
            for(int fast = 0; fast < c.length; fast++){
                if(c[fast] != '#'){
                    c[slow] = c[fast];  // 由于不用保留调整后的数据，因此直接赋值即可
                    slow ++;
                }else if(slow > 0 && c[fast] == '#'){
                    slow --;
                }
            }

            return new String(c).substring(0, slow);
        }
    }
}
